Performance monitoring of a processor can be used for characterizing, debugging, and tuning software and program code. Decomposing performance characteristics per function's arguments may help select the right optimization strategy for different invocations of the same function. The performance of the same function can depend on its input parameters, and the function may be optimized differently for different function argument values.
Monitoring processor performance in executing functions based on different argument values arguments may help optimize execution of functions in a processor. For example, memory copy operations depend heavily on the length of input/output arrays, and different lengths require different approaches to optimization: shorter operations require the use of general-purpose registers, while longer ones run better with SSE/AVX registers.